package com.example.demo.程序员面试金典;

import java.util.Arrays;

/**
 * @description: TODO
 * @author: zhangzc
 * @modified By: zhangzc
 * @date: Created in 2022/9/8 16:11
 * @version:v1.0
 */
public class 最小差 {

	//给定两个整数数组a和b，计算具有最小差绝对值的一对数值（每个数组中取一个值），并返回该对数值的差
	//
	//示例：
	//
	//输入：{1, 3, 15, 11, 2}, {23, 127, 235, 19, 8}
	//输出： 3，即数值对(11, 8)

	//使用双指针

	class Solution {

		public int smallestDifference(int[] a, int[] b) {
			Arrays.sort(a);
			Arrays.sort(b);
			long result = Integer.MAX_VALUE;
			int i = 0, j = 0;
			while (i < a.length && j < b.length) {
				result = Math.min(result, Math.abs((long) a[i] - (long) b[j]));
				if (a[i] < b[j]) {
					++i;
				} else {
					++j;
				}
			}
			return (int) result;

		}
	}

}
